package com.symc.his.api.examination;

import com.symc.his.api.base.BaseResponse;
import com.symc.his.api.examination.dto.req.CheckoutTermReqDTO;
import com.symc.his.api.examination.dto.req.InspectTermReqDTO;
import com.symc.his.api.examination.dto.resp.InspectTermRespDTO;
import com.symc.his.api.examination.dto.resp.InspectTermResultRespDTO;
import com.symc.his.api.examination.dto.resp.ItemFeeRespDTO;
import java.util.List;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * @Description: 检验服务接口
 * @CreateTime: 2023/4/23 22:12
 * @Version:
 * @Since: 1.8
 * @Author: 辛凤文 forward.seen@foxmail.com
 */
public interface ExaminationService {

    /**
     * 获取医嘱
     * @param checkoutTermReqDTO
     * @return
     */
    @GetMapping("/getCheckoutTerm")
    BaseResponse getCheckoutTerm(CheckoutTermReqDTO checkoutTermReqDTO);

    /**
     * 修改医嘱
     * @param checkoutTermReqDTO
     * @return
     */
    @PostMapping("/updateCheckoutTerm")
    BaseResponse updateCheckoutTerm(@RequestBody CheckoutTermReqDTO checkoutTermReqDTO);

    /**
     * getInspectTermListById
     * @param inspectTermId
     * @return
     */
    @GetMapping("/getInspectTermListById")
    BaseResponse<InspectTermRespDTO> getInspectTermListById(@RequestParam Integer inspectTermId);

    /**
     * getInspectTermListByVisitRecordIdAndTypeCode
     * @param visitRecordId
     * @param medicalOrderTypeCode
     * @return
     */
    @GetMapping("/getInspectTermListByVisitRecordIdAndTypeCode")
    BaseResponse<List<String>> getInspectTermCodeListByVisitRecordIdAndTypeCode(@RequestParam String visitRecordId,@RequestParam String medicalOrderTypeCode);

    /**
     * getInspectTermListByVisitRecordId
     * @param visitRecordId
     * @return
     */
    @GetMapping("/getInspectTermListByVisitRecordId")
    BaseResponse<InspectTermRespDTO> getInspectTermListByVisitRecordId(@RequestParam String visitRecordId);

    /**
     * 增加检查医嘱
     * @param inspectTermReqDTO
     * @return
     */
    @PostMapping("/insertInspectTerm")
    BaseResponse insertInspectTerm(@RequestBody InspectTermReqDTO inspectTermReqDTO);

    /**
     * 修改检查医嘱
     * @param inspectTermReqDTO
     * @return
     */
    @PostMapping("/updateInspectTerm")
    BaseResponse updateInspectTerm(@RequestBody InspectTermReqDTO inspectTermReqDTO);

    /**
     * 保存检查医嘱
     * @param inspectTermReqDTO
     * @return
     */
    @PostMapping("/saveInspectTerm")
    BaseResponse saveInspectTerm(@RequestBody InspectTermReqDTO inspectTermReqDTO);

    /**
     * 删除检查医嘱
     * @param inspectTermReqDTO
     * @return
     */
    @PostMapping("/deleteInspectTermByVisitRecordIdAndInspectTermCode")
    BaseResponse deleteInspectTermByVisitRecordIdAndInspectTermCode(@RequestBody InspectTermReqDTO inspectTermReqDTO);

    /**
     * 获取所有的检查收费项目
     * SELECT * FROM foundation.com_item_fee f WHERE fee_code = '55'
     * @return
     */
    @GetMapping("/getItemFeeInspectList")
    BaseResponse<ItemFeeRespDTO> getItemFeeInspectList();

    /**
     * 根据feecode 获取 费用项目名称
     * @param itemFeeCode
     * @return
     */
    @GetMapping("/getItemFeeNameByItemFeeCode")
    BaseResponse<String> getItemFeeNameByItemFeeCode(@RequestParam String itemFeeCode);

    /**
     * 根据visitRecordId获取到某病人看诊次的检查结果数据列表
     * @param visitRecordId
     * @return
     */
    @GetMapping("/getInspectTermResultListByVisitRecordId")
    BaseResponse<InspectTermResultRespDTO> getInspectTermResultListByVisitRecordId(@RequestParam String visitRecordId);
}